CopyNetwork Subroutine

public subroutine CopyNetwork(input, output)

make a copy of one observational network

Arguments

Type IntentOptional Attributes Name
type(ObservationalNetwork), intent(in) :: input
type(ObservationalNetwork), intent(inout) :: output

Variables

Type Visibility Attributes Name Initial
integer(kind=short), public :: k

Source Code

SUBROUTINE CopyNetwork &
!
(input, output)

IMPLICIT NONE

! Arguments with intent (in):
TYPE (ObservationalNetwork), INTENT(IN) :: input

! Arguments with intent(inout):
TYPE (ObservationalNetwork), INTENT(INOUT) :: output

!local declarations:
INTEGER (KIND = short) :: k

!----------------------------end of declarations-------------------------------

output % countObs      = input % countObs 
output % nodata        = input % nodata
output % timeIncrement = input % timeIncrement
output % time          = input % time
output % dataType      = input % dataType
output % description   = input % description
output % unit          = input % unit
output % mapping       = input % mapping
output % epsg          = input % epsg
output % offsetZ       = input % offsetZ

!allocate output network observations
IF (ALLOCATED (output % obs) ) THEN
   !check space is enough
   IF (output % countObs /= input % countObs) THEN
      DEALLOCATE (output % obs)
      ALLOCATE(output % obs (output % countObs))
   END IF
ELSE
    ALLOCATE(output % obs (output % countObs))
END IF

!create copy of observations
DO k = 1, output % countObs
  output % obs(k) % name         = input % obs(k) % name
  output % obs(k) % value        = input % obs(k) % value
  output % obs(k) % id           = input % obs(k) % id
  output % obs(k) % xyz          = input % obs(k) % xyz
!  output % obs(k) % col          = input % obs(k) % col
!  output % obs(k) % row          = input % obs(k) % row
  output % obs(k) % z            = input % obs(k) % z
END DO

RETURN
END SUBROUTINE CopyNetwork